<?php 

class DaoTipoModalidade extends DAO {
	
	public function get($id) {
		$select = db_select(TipoModalidade::TYPE)
		->fields(TipoModalidade::TYPE)
		->condition('id', $id)
		->execute()
		->fetchAll();
		
		foreach ($select as $row) {
			
			switch($row->id) {
				case 1:  $tipo = new Beneficio(); break;
				case 2:  $tipo = new Acumulativa(); break;
				case 3:  $tipo = new NaoAcumulativa(); break;
				default: $tipo = new stdClass(); break;
			}			
			
			$tipo->id 					= $row->id;
			$tipo->nome 				= $row->nome;		
		}
		
		return $tipo;
	}
	
	/** Carrega varias instancias do banco */
	public function listar() {
		$select = db_select(TipoModalidade::TYPE)
		->fields(TipoModalidade::TYPE)
			->execute()
				->fetchAll();

		$tipos = array();
		foreach ($select as $row) {
			
			switch($row->id) {
				case 1:  $tipo = new Beneficio(); break;
				case 2:  $tipo = new Acumulativa(); break;
				case 3:  $tipo = new NaoAcumulativa(); break;
				default: $tipo = new stdClass(); break;
			}			
			
			$tipo->id 					= $row->id;
			$tipo->nome 				= $row->nome;
			
			array_push($tipos, $tipo);
		}

		return $tipos;
	}

	/** retorna uma referencia do tipo de modalidade indicado pela id */
	public function getTipo($modalidade_id, $tipo_id) {
		$query = db_select('tipo', 't')
			->fields('t')
				->condition('id', $tipo_id)
					->execute()
						->fetchAll();
		
		foreach($query as $row) {
			switch ($row->id) {
				case 1 :
					$tipo = new Acumulativa(); break;
			
				case 2 :
					$tipo = new NaoAcumulativa(); break;
						
				case 3 :
					$tipo = new Beneficio(); break;
			
				default:
					$tipo = new stdClass(); break;
			}			
		}
		
		$tipo->restricoes = $this->getRestricoes($modalidade_id);
		return $tipo;		
	}
}